home *** CD-ROM | disk | FTP | other *** search
/ InterCD 2000 September / september_2000.iso / intercd / root / ^Linux / WindowMaker / src / texture.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-03-16  |  4.3 KB  |  172 lines

  1. /*
  2.  *  Window Maker window manager
  3.  * 
  4.  *  Copyright (c) 1997, 1998 Alfredo K. Kojima
  5.  * 
  6.  *  This program is free software; you can redistribute it and/or modify
  7.  *  it under the terms of the GNU General Public License as published by
  8.  *  the Free Software Foundation; either version 2 of the License, or
  9.  *  (at your option) any later version.
  10.  *
  11.  *  This program is distributed in the hope that it will be useful,
  12.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  *  GNU General Public License for more details.
  15.  *
  16.  *  You should have received a copy of the GNU General Public License
  17.  *  along with this program; if not, write to the Free Software
  18.  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 
  19.  *  USA.
  20.  */
  21.  
  22.  
  23. #ifndef WMTEXTURE_H_
  24. #define WMTEXTURE_H_
  25.  
  26. #include "screen.h"
  27. #include "wcore.h"
  28.  
  29. /* texture relief */
  30. #define WREL_RAISED    0
  31. #define WREL_SUNKEN    1
  32. #define WREL_FLAT    2
  33. #define WREL_ICON    4
  34. #define WREL_MENUENTRY    6
  35.  
  36. /* texture types */
  37. #define WREL_BORDER_MASK    1
  38.  
  39. #define WTEX_SOLID     ((1<<1)|WREL_BORDER_MASK)
  40. #define WTEX_HGRADIENT    ((1<<2)|WREL_BORDER_MASK)
  41. #define WTEX_VGRADIENT    ((1<<3)|WREL_BORDER_MASK)
  42. #define WTEX_DGRADIENT    ((1<<4)|WREL_BORDER_MASK)
  43. #define WTEX_MHGRADIENT    ((1<<5)|WREL_BORDER_MASK)
  44. #define WTEX_MVGRADIENT    ((1<<6)|WREL_BORDER_MASK)
  45. #define WTEX_MDGRADIENT    ((1<<7)|WREL_BORDER_MASK)
  46. #define WTEX_PIXMAP    (1<<8)
  47. #define WTEX_THGRADIENT    ((1<<9)|WREL_BORDER_MASK)
  48. #define WTEX_TVGRADIENT    ((1<<10)|WREL_BORDER_MASK)
  49. #define WTEX_TDGRADIENT    ((1<<11)|WREL_BORDER_MASK)
  50. #define WTEX_FUNCTION    ((1<<12)|WREL_BORDER_MASK)
  51.  
  52. /* pixmap subtypes */
  53. #define WTP_TILE    2
  54. #define WTP_SCALE    4
  55. #define WTP_CENTER    6
  56.  
  57.  
  58. typedef struct {
  59.     short type;                   /* type of texture */
  60.     char subtype;               /* subtype of the texture */
  61.     XColor color;               /* default background color */
  62.     GC gc;                   /* gc for the background color */
  63. } WTexAny;
  64.  
  65.  
  66. typedef struct WTexSolid {
  67.     short type;
  68.     char subtype;
  69.     XColor normal;
  70.     GC normal_gc;
  71.     
  72.     GC light_gc;
  73.     GC dim_gc;
  74.     GC dark_gc;
  75.  
  76.     XColor light;
  77.     XColor dim;
  78.     XColor dark;
  79. } WTexSolid;
  80.  
  81.  
  82. typedef struct WTexGradient {
  83.     short type;
  84.     char subtype;
  85.     XColor normal;
  86.     GC normal_gc;
  87.  
  88.     RColor color1;
  89.     RColor color2;
  90. } WTexGradient;
  91.  
  92.  
  93. typedef struct WTexMGradient {
  94.     short type;
  95.     char subtype;
  96.     XColor normal;
  97.     GC normal_gc;
  98.  
  99.     RColor **colors;
  100. } WTexMGradient;
  101.  
  102.  
  103. typedef struct WTexPixmap {
  104.     short type;
  105.     char subtype;
  106.     XColor normal;
  107.     GC normal_gc;
  108.  
  109.     struct RImage *pixmap;
  110. } WTexPixmap;
  111.  
  112. typedef struct WTexTGradient {
  113.     short type;
  114.     char subtype;
  115.     XColor normal;
  116.     GC normal_gc;
  117.  
  118.     RColor color1;
  119.     RColor color2;
  120.     struct RImage *pixmap;
  121.     int opacity;
  122. } WTexTGradient;
  123.  
  124. typedef struct WTexFunction {
  125.     short type;
  126.     char subtype;
  127.     XColor normal;
  128.     GC normal_gc;
  129.  
  130.     void *handle;
  131.     RImage *(*render) (int, char**, int, int, int);
  132.     int argc;
  133.     char **argv;
  134. } WTexFunction;
  135.  
  136. typedef union WTexture {
  137.     WTexAny any;    
  138.     WTexSolid solid;
  139.     WTexGradient gradient;
  140.     WTexMGradient mgradient;
  141.     WTexPixmap pixmap;
  142.     WTexTGradient tgradient;
  143.     WTexFunction function;
  144. } WTexture;
  145.  
  146.  
  147. WTexSolid *wTextureMakeSolid(WScreen*, XColor*);
  148. WTexGradient *wTextureMakeGradient(WScreen*, int, RColor*, RColor*);
  149. WTexMGradient *wTextureMakeMGradient(WScreen*, int, RColor**);
  150. WTexTGradient *wTextureMakeTGradient(WScreen*, int, RColor*, RColor*, char *, int);
  151. WTexPixmap *wTextureMakePixmap(WScreen *scr, int style, char *pixmap_file, 
  152.                    XColor *color);
  153. #ifdef TEXTURE_PLUGIN
  154. WTexFunction *wTextureMakeFunction(WScreen*, char *, char *, int, char **);
  155. #endif
  156. void wTextureDestroy(WScreen*, WTexture*);
  157. void wTexturePaint(WTexture *, Pixmap *, WCoreWindow*, int, int);
  158. void wTextureRender(WScreen*, WTexture*, Pixmap*, int, int, int);
  159. struct RImage *wTextureRenderImage(WTexture*, int, int, int);
  160.  
  161.  
  162. void wTexturePaintTitlebar(struct WWindow *wwin, WTexture *texture, Pixmap *tdata,
  163.                int repaint);
  164.  
  165.  
  166. #define FREE_PIXMAP(p) if ((p)!=None) XFreePixmap(dpy, (p)), (p)=None
  167.  
  168. void wDrawBevel(Drawable d, unsigned width, unsigned height,
  169.         WTexSolid *texture, int relief);
  170.  
  171. #endif
  172.